
using System;
using System.Data;
using System.Data.SqlClient;
using Csla;
using Csla.Data;
using Csla.Validation;

namespace SariturIntranetLibrary.RM
{
    [Serializable()]
    public class FuncionarioChildInfo : Csla.ReadOnlyBase<FuncionarioChildInfo>
    {

        #region Business Properties and Methods

        //declare members

        private int _codEmpresa = 0;

        private string _empresa = string.Empty;

        private string _codSecao = string.Empty;

        private string _descSecao = string.Empty;

        private string _codsituacao = string.Empty;

        private string _chapa = string.Empty;

        private string _nome = string.Empty;

        private SmartDate _dataadmissao = new SmartDate(false);

        private SmartDate _datademissao = new SmartDate(false);

        private string _cpf = string.Empty;

        private SmartDate _dtnascimento = new SmartDate(false);

        private string _estadocivil = string.Empty;

        private string _sexo = string.Empty;

        private string _grauinstrucao = string.Empty;

        private string _rua = string.Empty;

        private string _numero = string.Empty;

        private string _complemento = string.Empty;

        private string _bairro = string.Empty;

        private string _estado = string.Empty;

        private string _cidade = string.Empty;

        private string _cep = string.Empty;

        private string _cartidentidade = string.Empty;

        private string _tipocarthabilit = string.Empty;

        public int CodEmpresa
        {
            get
            {
                CanReadProperty("CodEmpresa", true);
                return _codEmpresa;
            }
        }

        public string Empresa
        {
            get
            {
                CanReadProperty("Empresa", true);
                return _empresa;
            }
        }

        public string CodSecao
        {
            get
            {
                CanReadProperty("CodSecao", true);
                return _codSecao;
            }
        }

        public string DescSecao
        {
            get
            {
                CanReadProperty("DescSecao", true);
                return _descSecao;
            }
        }

        public string Codsituacao
        {
            get
            {
                CanReadProperty("Codsituacao", true);
                return _codsituacao;
            }
        }

        public string Chapa
        {
            get
            {
                CanReadProperty("Chapa", true);
                return _chapa;
            }
        }

        public string Nome
        {
            get
            {
                CanReadProperty("Nome", true);
                return _nome;
            }
        }

        public DateTime Dataadmissao
        {
            get
            {
                CanReadProperty("Dataadmissao", true);
                return _dataadmissao.Date;
            }
        }

        public string DataadmissaoString
        {
            get
            {
                CanReadProperty("DataadmissaoString", true);
                return _dataadmissao.Text;
            }
        }

        public DateTime Datademissao
        {
            get
            {
                CanReadProperty("Datademissao", true);
                return _datademissao.Date;
            }
        }

        public string DatademissaoString
        {
            get
            {
                CanReadProperty("DatademissaoString", true);
                return _datademissao.Text;
            }
        }

        [System.ComponentModel.DataObjectField(true, false)]
        public string Cpf
        {
            get
            {
                CanReadProperty("Cpf", true);
                return _cpf;
            }
        }

        public DateTime Dtnascimento
        {
            get
            {
                CanReadProperty("Dtnascimento", true);
                return _dtnascimento.Date;
            }
        }

        public string DtnascimentoString
        {
            get
            {
                CanReadProperty("DtnascimentoString", true);
                return _dtnascimento.Text;
            }
        }

        public string Estadocivil
        {
            get
            {
                CanReadProperty("Estadocivil", true);
                return _estadocivil;
            }
        }

        public string Sexo
        {
            get
            {
                CanReadProperty("Sexo", true);
                return _sexo;
            }
        }

        public string Grauinstrucao
        {
            get
            {
                CanReadProperty("Grauinstrucao", true);
                return _grauinstrucao;
            }
        }

        public string Rua
        {
            get
            {
                CanReadProperty("Rua", true);
                return _rua;
            }
        }

        public string Numero
        {
            get
            {
                CanReadProperty("Numero", true);
                return _numero;
            }
        }

        public string Complemento
        {
            get
            {
                CanReadProperty("Complemento", true);
                return _complemento;
            }
        }

        public string Bairro
        {
            get
            {
                CanReadProperty("Bairro", true);
                return _bairro;
            }
        }

        public string Estado
        {
            get
            {
                CanReadProperty("Estado", true);
                return _estado;
            }
        }

        public string Cidade
        {
            get
            {
                CanReadProperty("Cidade", true);
                return _cidade;
            }
        }

        public string Cep
        {
            get
            {
                CanReadProperty("Cep", true);
                return _cep;
            }
        }

        public string Cartidentidade
        {
            get
            {
                CanReadProperty("Cartidentidade", true);
                return _cartidentidade;
            }
        }

        public string Tipocarthabilit
        {
            get
            {
                CanReadProperty("Tipocarthabilit", true);
                return _tipocarthabilit;
            }
        }

        protected override object GetIdValue()
        {
            return _cpf;
        }

        #endregion //Business Properties and Methods

        #region Authorization Rules
        protected override void AddAuthorizationRules()
        {
            //TODO: Define authorization rules in FuncionarioChildInfo
            //AuthorizationRules.AllowRead("CodEmpresa", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Empresa", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("CodSecao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("DescSecao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Codsituacao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Chapa", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Nome", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Dataadmissao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("DataadmissaoString", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Datademissao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("DatademissaoString", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Cpf", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Dtnascimento", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("DtnascimentoString", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Estadocivil", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Sexo", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Grauinstrucao", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Rua", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Numero", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Complemento", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Bairro", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Estado", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Cidade", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Cep", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Cartidentidade", "FuncionarioChildInfoReadGroup");
            //AuthorizationRules.AllowRead("Tipocarthabilit", "FuncionarioChildInfoReadGroup");

        }

        #endregion //Authorization Rules

        #region Factory Methods
        internal static FuncionarioChildInfo GetFuncionarioChildInfo(SafeDataReader dr)
        {
            return new FuncionarioChildInfo(dr);
        }

        private FuncionarioChildInfo(SafeDataReader dr)
        {
            Fetch(dr);
        }
        #endregion //Factory Methods
        
        #region Data Access

        #region Data Access - Fetch
        private void Fetch(SafeDataReader dr)
        {
            FetchObject(dr);

            //load child object(s)
            FetchChildren(dr);

        }

        private void FetchObject(SafeDataReader dr)
        {
            _codEmpresa = dr.GetInt32("Cod_Empresa");
            _empresa = dr.GetString("Empresa");
            _codSecao = dr.GetString("Cod_Secao");
            _descSecao = dr.GetString("Desc_Secao");
            _codsituacao = dr.GetString("CODSITUACAO");
            _chapa = dr.GetString("CHAPA");
            _nome = dr.GetString("NOME");
            _dataadmissao = dr.GetSmartDate("DATAADMISSAO", _dataadmissao.EmptyIsMin);
            _datademissao = dr.GetSmartDate("DATADEMISSAO", _datademissao.EmptyIsMin);
            _cpf = dr.GetString("CPF");
            _dtnascimento = dr.GetSmartDate("DTNASCIMENTO", _dtnascimento.EmptyIsMin);
            _estadocivil = dr.GetString("ESTADOCIVIL");
            _sexo = dr.GetString("SEXO");
            _grauinstrucao = dr.GetString("GRAUINSTRUCAO");
            _rua = dr.GetString("RUA");
            _numero = dr.GetString("NUMERO");
            _complemento = dr.GetString("COMPLEMENTO");
            _bairro = dr.GetString("BAIRRO");
            _estado = dr.GetString("ESTADO");
            _cidade = dr.GetString("CIDADE");
            _cep = dr.GetString("CEP");
            _cartidentidade = dr.GetString("CARTIDENTIDADE");
            _tipocarthabilit = dr.GetString("TIPOCARTHABILIT");
        }

        private void FetchChildren(SafeDataReader dr)
        {
        }
        #endregion //Data Access - Fetch
        #endregion //Data Access
    }
}
